package com.xiaobao.campusLostFoundAfter.controller;

import com.xiaobao.campusLostFoundAfter.common.Result;
import com.xiaobao.campusLostFoundAfter.pojo.AuditRecord;
import com.xiaobao.campusLostFoundAfter.service.AuditRecordService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

//  审核记录
@RestController
@RequestMapping("/AuditRecord")
public class AuditRecordController {
    private final AuditRecordService auditRecordService;

    public AuditRecordController(AuditRecordService auditRecordService) {
        this.auditRecordService = auditRecordService;
    }

    //  获取所有审核记录
    @GetMapping("/getAll")
    public Result<List<AuditRecord>> getAllAuditRecords() {
        List<AuditRecord> auditRecords = auditRecordService.getAllAuditRecords();
        return Result.success(auditRecords);
    }

    //  获取指定类型的审核记录
    @GetMapping("/getByItemType")
    public Result<List<AuditRecord>> getAuditRecordsByItemType(Integer itemType) {
        List<AuditRecord> auditRecords = auditRecordService.getAuditRecordsByItemType(itemType);
        return Result.success(auditRecords);
    }

    //  获取指定审核者的审核记录
    @GetMapping("/getByAuditorId")
    public Result<List<AuditRecord>> getAuditRecordsByAuditorId(String auditorId) {
        List<AuditRecord> auditRecords = auditRecordService.getAuditRecordsByAuditorId(auditorId);
        return Result.success(auditRecords);
    }

    //  获取指定审核项的审核记录
    @GetMapping("/getByItemId")
    public Result<List<AuditRecord>> getAuditRecordsByItemId(Integer itemId) {
        List<AuditRecord> auditRecords = auditRecordService.getAuditRecordsByItemId(itemId);
        return Result.success(auditRecords);
    }

    //  获取指定审核项的审核记录
    @GetMapping("/getByItemTypeAndAuditorId")
    public Result<List<AuditRecord>> getAuditRecordsByItemTypeAndAuditorId(Integer itemType, String auditorId) {
        List<AuditRecord> auditRecords = auditRecordService.getAuditRecordsByItemTypeAndAuditorId(itemType, auditorId);
        return Result.success(auditRecords);
    }

    //根据审核状态获取审核记录
    @GetMapping("/getByStatus")
    public Result<List<AuditRecord>> getAuditRecordsByStatus(Integer status) {
        List<AuditRecord> auditRecords = auditRecordService.getAuditRecordsByStatus(status);
        return Result.success(auditRecords);
    }

    //  添加审核记录
    @PostMapping("/add")
    public Result<String> addAuditRecord(@RequestBody AuditRecord auditRecord) {
        int result = auditRecordService.addAuditRecord(auditRecord);
        if (result == 1) {
            return Result.success();
        } else {
            return Result.error("添加失败");
        }
    }

    //修改审核记录
    @PutMapping("/update")
    public Result<String> updateAuditRecord(@RequestBody AuditRecord auditRecord) {
        int result = auditRecordService.updateAuditRecord(auditRecord);
        if (result == 1) {
            return Result.success();
        } else {
            return Result.error("修改失败");
        }
    }
}
